package com.sitech.portal.system.dao;

import com.sitech.ibnms.core.IPage;
import com.sitech.ibnms.core.PageForm;
import com.sitech.portal.system.domain.TblSYS_MODULE;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public interface ISysModuleDao {

	public void add(TblSYS_MODULE tblSYS_MODULE);

    public void update(TblSYS_MODULE tblSYS_MODULE);

    public void update(String directory, String newDirectory);

    public void deleteByRoleId(String roleId);

    public void deleteByPKs(String mId);

    public List findList();

    public IPage findListByPK(HashMap map, PageForm pageForm);
    
    public IPage findListByPKLoginId(HashMap map, PageForm pageForm);

    public TblSYS_MODULE findObjByPK(String mId);

    public List findlModuleListForTree(String ROLE_ID);

    public List findFirstLevelModuleListByLoginID(String LOGIN_ID);
    
    public List findFirstLevelModuleListByLoginIDAndSystemId(String LOGIN_ID,
            String SYSTEM_ID);

    /**
     * 根据父节点查找下一级module(带权限)
     * @param LOGIN_ID
     * @param parent_id
     * @return
     */
    public List<HashMap> findModuleListByLoginIDAndParentId(String LOGIN_ID, String parent_id);

    /**
     * 递归查询子模块，带权限，如果loginId=admin则不鉴权
     *
     * @param loginId
     * @param parentId
     * @return
     */
    List<Map> recursiveQuerySubModules(String loginId, String parentId);

    /**
     * 根据父节点查找下一级module(无权限)
     * @param parent_id
     * @return
     */
    public List<HashMap> findModuleListByParentId(String parent_id);
    
    /**
     * 根据父节点查找所有子module(带权限)
     * @param LOGIN_ID
     * @param parent_id
     * @return
     */
    public List<HashMap> findAllModuleListByLoginIDAndParentId(String LOGIN_ID, String parent_id);

    /**
     * 根据父节点查找所有子module(无权限)
     * @param parent_id
     * @return
     */
    public List<HashMap> findAllModuleListByParentId(String parent_id);

    public List findSecondLevelModuleListByLoginID(String MODULE_ID,
            String LOGIN_ID);

    public int matchChar(String s, char ch);

    public List getAllModuleForReport(String loginId, String pre_super,
            int pre_super_len);

    public List checkPAGE_ELEMENT(String PAGE_ELEMENT);
    
    public List<TblSYS_MODULE> findAllModuleForRoleConfig(String systemId);
    
    public String getModuleDirectory(String module_id);


    public List<Map> selectModuleForTokenInput(String input,String num,String user);

    public TblSYS_MODULE getModuleByPath(String path);
}
